"""网络协议大体上可分为tcp和udp,tcp是面向连接的协议,udp是无连接的协议"""
import socket


# 第一个参数是协议族(用来决定是网络连接还是本地连接，AF_INET代表网络连接，AF_UNIX代表本地连接，本地连接意味着就是机器内通信)
# 第二个参数是协议类型,SOCK_STREAM代表tcp协议,SOCK_DGRAM代表udp协议
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# API
tcp_socket.bind(("127.0.0.1", 0)) # 绑定地址和端口,0代表随机端口,第一个参数是IP，第二个参数是端口
tcp_socket.listen(5) # tcp监听,参数是最大连接数
tcp_socket.accept() # 接收tcp连接,返回值是元组,第一个是连接对象,第二个是地址和端口
tcp_socket.send() # 发送tcp数据,返回值是发送的字节数
udp_socket.sendto(b"hello", ("127.0.0.1", 8888)) # 发送udp数据,第一个参数是数据,第二个参数是地址和端口
tcp_socket.recv() # 接收数据,返回值是数据
udp_socket.recvfrom() # 接收udp数据,返回值是元组,第一个是数据,第二个是地址和端口
tcp_socket.close() # 关闭连接
